PLUSHIE

Programmation en Langage Universel Séquentiel Heuristique
pour une Intelligence Évolutive

Un langage qui apprend et se transforme

Forces
  • Tout est modifiable, les instructions ne sont pas prédéfinies.
    • Si un mot clé ne vous plaît pas ou ne vous paraît pas pratique, changez-le, ou créez un synonyme pour conserver la compatibilité. PLUSHIE peut ainsi se décliner en plusieurs langues ou dialectes, ou même imiter les langages ésotériques si ça vous amuse.

      On peut donc obtenir des formulations proches du langage naturel même avant de modifier l'interpréteur de base.

      Exemple

                          Calculer Trois Fois Deux Effectuer Calcul Afficher Résultat À l'écran
                             
       Six 
                          
  • Lisibilité

      Il en découle une formulation du code beaucoup plus lisible que celle des langages ésotériques de type Brainfuck , les parenthèses du LISP ou les langages à instruction unique comme SUBLEQ.

  • Les procédures s'apprennent progressivement.
    • PLUSHIE apprend en permanence. Son langage est appris de manière incrémentale : les mots émergent du texte, les instructions apparaissent de manière dynamique. Il n'a pas de grammaire prédéfinie, ni fixe.

      On peut donc observer la construction d'un système informatique complet à partir de sa base la plus simple.

  • Minimalisme radical
    • Une seule procédure primitive (copie en double indirection), une mémoire simple (tête/suite), un mécanisme d'exécution unique et donc presque rien à apprendre avant de l'utiliser.

  • Les programmes en PLUSHIE peuvent se modifier eux-mêmes pendant leur exécution.
    • Cela inclut la chaîne d'exécution de l'interpréteur initial, qui peut donc être intégralement remplacé, jusqu'à ce qu'on en arrive à se demander comment tout a commencé.

  • Unification forte
    • pas de distinction données / variables / programmes / contrôle:
      la chaîne d'exécution est dans la mémoire, elle est modifiable en temps réel, par elle-même. Les instructions sont des structures en mémoire.

  • homogénéité structurelle
  • réflexivité importante
    • la récursivité est intrinsèque: toute procédure ou fonction peut non seulement s'appeler elle-même mais aussi se modifier pendant son exécution. Le pointeur d'exécution est manipulable et le système peut modifier son propre comportement

  • fort potentiel pédagogique
    • Il ya très peu de choses à apprendre pour coder en PLUSHIE. Les termes que PLUSHIE utilisera seront le fruit de votre propre production. Même les fonctions définies dans le fichier ini peuvent être remplacées puis oubliées. et pourtant PLUSHIE reste un langage complet, offre des défis de programmation, et peut gérer la récursivité, les piles, les arbres...

  • exploration des systèmes auto-modifiants
  • proximité avec les structures mémoire
  • terrain d’expérimentation sur l’émergence
  • souplesse conceptuelle
  • potentiel d'élégance au sens théorique

Limites et difficultés
  • PLUSHIE a les défauts de ses qualités.
    • Comme on peut utiliser les mots que l'on souhaite, on arrive rapidement à créer des dialectes non compatibles ou non compréhensibles d'une application de PLUSHIE à l'autre (comme dans le cas du langage humain).

      Comme les programmes peuvent se modifier pendant leur exécution, il est très facile de "planter" PLUSHIE (vous allez faire chauffer la touche et le bouton ).
      Le minimalisme du langage ne guide pas le programmeur (ceci dit, PLUSHIE peut être fourni avec un set de fonctions de base aussi large que souhaité).


  • Vitesse d'exécution
    • Avec l'interpréteur de base, PLUSHIE lit caractère par caractère les fichier textes et teste à chaque caractère s'il connait le mot. C'est donc lent. Le seul fichier ini.txt met une seconde à se charger sur un ordinateur raisonnablement performant.
      (Toutefois, une fois chargés en mémoire, les programmes s'exécutent nettement plus vite) La répétition de l'instruction unique peut conduire à une efficacité faible, le performance n'est pas optimisée:
      PLUSHIE n'est pas un langage efficace.


  • Instabilité et bugs
    • Avec des programmes qui peuvent se modifier pendant leur exécution, pas besoin de vous faire un dessin. Si ?


  • Sensibilité à la syntaxe
    • Chaque caractère a son importance pour PLUSHIE. Une simple erreur de frappe crée donc un mot différent. Si on garde la convention facultative de terminer les mots par des espaces (il n'y a pas de caractère séparateur en PLUSHIE), un double espace suffit à planter le code. D'aucuns diront que ce n'est pas pire que l'html ou le javascript.


  • Compréhension réelle du code
    • En se laissant porter par le sens humain usuel des mots utilisés, on peut perdre de vue assez rapidement ce que fait réellement le programme. La copie en double indirection elle-même n'est pas intuitive et produit des effets difficiles à anticiper quand on n'est pas habitué.
      Sous ses dehors simple, PLUSHIE peut produire des structures et comportements très complexes. Suivre ce qu'il se passe peut devenir difficile, même pour quelqu'un de technique.


  • Prévisibilité réduite
    • Puisque PLUSHIE peut se modifier lui-même, il peut générer des programmes aux propriétés imprévisibles (reste à le démontrer formellement).


  • Débogage potentiellement complexe
    • Pas de séparation claire des niveaux, effets globaux de petites modifications, propagation non locale, variables publiques uniquement...


  • Absence d’écosystème mature
    • PLUSHIE is not GNU...


  • Stade expérimental

      Pas d'outils de débogage fournis (mais si il existe des astuces, des espions possibles )
      Pas d'optimisation native


  • Courbe conceptuelle atypique

  • Faible adéquation aux usages industriels classiques. où le contrôle absolu est recherché.

  • Crédibilité scientifique, analyse formelle

      Il manque encore des définitions mathématiques précises, des invariants et un cadre de preuve.

  • Positionnnement pas clair

      Vous non plus vous ne savez pas si PLUSHIE est :

        un langage de programmation,
        un langage formel,
        une machine abstraite,
        un système expérimental,
        un modèle de calcul,
        un environnement d'évolution pour des programmes autonomes ?

🏗
En construction, plus à venir